package basic_syntax;

public class TypeComparisonDemo {

    public void comparePrimitiveTypesExample() {
        System.out.println("判断值类型是否相同，使用==运算符");
        int a = 10;
        int b = 10;
        if (a == b) {
            System.out.println("值类型相同");
        } else {
            System.out.println("值类型不同");
        }
    }


    public static void fdCompareExample() {
        System.out.println("浮点数（如 float 和 double 类型）时，不能直接使用 == 运算符来判断两个浮点数是否相等");
        double a = 0.1 + 0.2;
        double b = 0.3;

        if (a == b) {
            System.out.println("a 和 b 相等");
        } else {
            System.out.println("a 和 b 不相等");
        }

        System.out.println("使用一个很小的误差范围（称为 epsilon 或 容差）来判断它们的差值是否在可接受的范围内");
        double epsilon = 1e-10;
        if (Math.abs(a - b) < epsilon) {
            System.out.println("a 和 b 相等");
        } else {
            System.out.println("a 和 b 不相等");
        }
    }


    public static void compareReferenceTypesExample() {

        System.out.println("判断引用类型和其指向是否相同，用==和.equals()，且注意避免NullPointerException");

        String s1 = new String("hello");
        String s2 = new String("hello");
        if (s1 == s2) {
            System.out.println("引用类型本身相同");
        } else {
            System.out.println("引用类型本身不同");
        }

        if (s1.equals(s2)) {
            System.out.println("引用类型指向的值相同");
        } else {
            System.out.println("引用类型指向的值不同");
        }
    }



}